home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-10-12 | 14.6 KB | 506 lines | [TEXT/PJMM] |
- unit TextUtils;
-
- { Pascal Interface to the Macintosh Libraries }
-
- { Copyright © Apple Computer Inc. }
- { All Rights Reserved }
-
- { Adapted for use with THINK Pascal 4.0.x by Marco Piovanelli }
-
- interface
- uses
- Types, IntlResources, OSUtils, QuickdrawText;
-
- { New constants for System 7.0: }
-
- const
- { Constants for truncWhere argument in TruncString and TruncText }
- truncEnd = 0; { Truncate at end }
- truncMiddle = $4000; { Truncate in middle }
- smTruncEnd = 0; { Truncate at end - obsolete }
- smTruncMiddle = $4000; { Truncate in middle - obsolete }
- { Constants for TruncString and TruncText results }
- notTruncated = 0; { No truncation was necessary }
- truncated = 1; { Truncation performed }
- truncErr = -1; { General error }
- smNotTruncated = 0; { No truncation was necessary - obsolete }
- smTruncated = 1; { Truncation performed - obsolete }
- smTruncErr = -1; { General error - obsolete }
-
- fVNumber = 0; { first version of NumFormatString }
- { Special language code values for Language Order }
- systemCurLang = -2; { current (itlbLang) lang for system script }
- systemDefLang = -3; { default (table) lang for system script }
- currentCurLang = -4; { current (itlbLang) lang for current script }
- currentDefLang = -5; { default lang for current script }
- scriptCurLang = -6; { current (itlbLang) lang for specified script }
- scriptDefLang = -7; { default language for a specified script }
-
- iuSystemCurLang = -2; { <obsolete> current (itlbLang) lang for system script }
- iuSystemDefLang = -3; { <obsolete> default (table) lang for system script }
- iuCurrentCurLang = -4; { <obsolete> current (itlbLang) lang for current script }
- iuCurrentDefLang = -5; { <obsolete> default lang for current script }
- iuScriptCurLang = -6; { <obsolete> current (itlbLang) lang for specified script }
-
- { <obsolete> default language for a specified script }
- iuScriptDefLang = -7;
-
-
- type
- StyledLineBreakCode = SInt8;
-
-
- const
- smBreakWord = 0;
- smBreakChar = 1;
- smBreakOverflow = 2;
-
-
- type
- FormatClass = SInt8;
-
-
- const
- fPositive = 0;
- fNegative = 1;
- fZero = 2;
-
-
- type
- FormatResultType = SInt8;
-
-
- const
- fFormatOK = 0;
- fBestGuess = 1;
- fOutOfSynch = 2;
- fSpuriousChars = 3;
- fMissingDelimiter = 4;
- fExtraDecimal = 5;
- fMissingLiteral = 6;
- fExtraExp = 7;
- fFormatOverflow = 8;
- fFormStrIsNAN = 9;
- fBadPartsTable = 10;
- fExtraPercent = 11;
- fExtraSeparator = 12;
- fEmptyFormatString = 13;
-
-
- type
- NumFormatString = packed record
- fLength: UInt8;
- fVersion: UInt8;
- data: packed array[0..253] of CHAR; { private data }
- end;
- NumFormatStringRec = NumFormatString;
-
- FVector = record
- start: INTEGER;
- length: INTEGER;
- end;
- { index by [fPositive..fZero] }
- TripleInt = array[0..2] of FVector;
-
- ScriptRunStatus = record
- script: SInt8;
- runVariant: SInt8;
- end;
- { New types for System 7.0: }
- { Type for truncWhere parameter in new TruncString, TruncText }
- TruncCode = INTEGER;
-
-
- const
- shortDate = 0;
- longDate = 1;
- abbrevDate = 2;
-
-
- type
- DateForm = SInt8;
-
-
- const
- { StringToDate status values }
- fatalDateTime = $8000; { StringToDate and String2Time mask to a fatal error }
- longDateFound = 1; { StringToDate mask to long date found }
- leftOverChars = 2; { StringToDate & Time mask to warn of left over characters }
- sepNotIntlSep = 4; { StringToDate & Time mask to warn of non-standard separators }
- fieldOrderNotIntl = 8; { StringToDate & Time mask to warn of non-standard field order }
- extraneousStrings = 16; { StringToDate & Time mask to warn of unparsable strings in text }
- tooManySeps = 32; { StringToDate & Time mask to warn of too many separators }
- sepNotConsistent = 64; { StringToDate & Time mask to warn of inconsistent separators }
- tokenErr = $8100; { StringToDate & Time mask for 'tokenizer err encountered' }
- cantReadUtilities = $8200;
- dateTimeNotFound = $8400;
- dateTimeInvalid = $8800;
-
-
- type
- StringToDateStatus = INTEGER;
-
- String2DateStatus = INTEGER;
-
- DateCacheRecord = packed record
- hidden: array[0..255] of INTEGER; { only for temporary use }
- end;
- DateCachePtr = ^DateCacheRecord;
-
- BreakTable = record
- charTypes: packed array[0..255] of CHAR;
- tripleLength: INTEGER;
- triples: array[0..0] of INTEGER;
- end;
- BreakTablePtr = ^BreakTable;
-
- { New NBreakTable for System 7.0: }
- NBreakTable = record
- flags1: SInt8;
- flags2: SInt8;
- version: INTEGER;
- classTableOff: INTEGER;
- auxCTableOff: INTEGER;
- backwdTableOff: INTEGER;
- forwdTableOff: INTEGER;
- doBackup: INTEGER;
- length: INTEGER; { length of NBreakTable }
- charTypes: packed array[0..255] of CHAR;
- tables: array[0..0] of INTEGER;
- end;
- NBreakTablePtr = ^NBreakTable;
-
- {}
- { The following functions are new names that work on 68k and PowerPC}
- {}
-
- function InitDateCache (theCache: DateCachePtr): OSErr;
- inline
- $2F3C, $8204, $FFF8, $A8B5;
- function ScriptOrder (script1: ScriptCode;
- script2: ScriptCode): INTEGER;
- inline
- $3F3C, $001E, $A9ED;
- function StyledLineBreak (textPtr: Ptr;
- textLen: LONGINT;
- textStart: LONGINT;
- textEnd: LONGINT;
- flags: LONGINT;
- var textWidth: Fixed;
- var textOffset: LONGINT): StyledLineBreakCode;
- inline
- $2F3C, $821C, $FFFE, $A8B5;
- function TruncString (width: INTEGER;
- var theString: Str255;
- truncWhere: TruncCode): INTEGER;
- inline
- $2F3C, $8208, $FFE0, $A8B5;
- function TruncText (width: INTEGER;
- textPtr: Ptr;
- var length: INTEGER;
- truncWhere: TruncCode): INTEGER;
- inline
- $2F3C, $820C, $FFDE, $A8B5;
- function ReplaceText (baseText: Handle;
- substitutionText: Handle;
- var key: Str15): INTEGER;
- inline
- $2F3C, $820C, $FFDC, $A8B5;
- procedure FindWordBreaks (textPtr: Ptr;
- textLength: INTEGER;
- offset: INTEGER;
- leadingEdge: BOOLEAN;
- breaks: BreakTablePtr;
- var offsets: OffsetTable;
- script: ScriptCode);
- inline
- $2F3C, $C012, $001A, $A8B5;
- procedure LowercaseText (textPtr: Ptr;
- len: INTEGER;
- script: ScriptCode);
- inline
- $3F3C, $0000, $2F3C, $800A, $FFB6, $A8B5;
- procedure UppercaseText (textPtr: Ptr;
- len: INTEGER;
- script: ScriptCode);
- inline
- $3F3C, $0400, $2F3C, $800A, $FFB6, $A8B5;
- procedure StripDiacritics (textPtr: Ptr;
- len: INTEGER;
- script: ScriptCode);
- inline
- $3F3C, $0200, $2F3C, $800A, $FFB6, $A8B5;
- procedure UppercaseStripDiacritics (textPtr: Ptr;
- len: INTEGER;
- script: ScriptCode);
- inline
- $3F3C, $0600, $2F3C, $800A, $FFB6, $A8B5;
- function FindScriptRun (textPtr: Ptr;
- textLen: LONGINT;
- var lenUsed: LONGINT): ScriptRunStatus;
- inline
- $2F3C, $820C, $0026, $A8B5;
- function EqualString (str1: ConstStr255Param;
- str2: ConstStr255Param;
- caseSensitive: BOOLEAN;
- diacSensitive: BOOLEAN): BOOLEAN;
- procedure UpperString (var theString: Str255;
- diacSensitive: BOOLEAN);
- procedure StringToNum (theString: ConstStr255Param;
- var theNum: LONGINT);
- procedure NumToString (theNum: LONGINT;
- var theString: Str255);
- function RelString (str1: ConstStr255Param;
- str2: ConstStr255Param;
- caseSensitive: BOOLEAN;
- diacSensitive: BOOLEAN): INTEGER;
- function StringToDate (textPtr: Ptr;
- textLen: LONGINT;
- theCache: DateCachePtr;
- var lengthUsed: LONGINT;
- var dateTime: LongDateRec): StringToDateStatus;
- inline
- $2F3C, $8214, $FFF6, $A8B5;
- function StringToTime (textPtr: Ptr;
- textLen: LONGINT;
- theCache: DateCachePtr;
- var lengthUsed: LONGINT;
- var dateTime: LongDateRec): StringToDateStatus;
- inline
- $2F3C, $8214, $FFF4, $A8B5;
- function ExtendedToString (var x: extended80; {CONST}
- var myCanonical: NumFormatString; {CONST}
- var partsTable: NumberParts;
- var outString: Str255): FormatStatus;
- inline
- $2F3C, $8210, $FFE8, $A8B5;
- function StringToExtended (source: ConstStr255Param; {CONST}
- var myCanonical: NumFormatString; {CONST}
- var partsTable: NumberParts;
- var x: extended80): FormatStatus;
- inline
- $2F3C, $8210, $FFE6, $A8B5;
- function StringToFormatRec (inString: ConstStr255Param; {CONST}
- var partsTable: NumberParts;
- var outString: NumFormatString): FormatStatus;
- inline
- $2F3C, $820C, $FFEC, $A8B5;
- function FormatRecToString ({CONST}
- var myCanonical: NumFormatString; {CONST}
- var partsTable: NumberParts;
- var outString: Str255;
- var positions: TripleInt): FormatStatus;
- inline
- $2F3C, $8210, $FFEA, $A8B5;
-
- { The following functions are old names, but are required for PowerPC builds }
- { becuase InterfaceLib exports these names, instead of the new ones.}
-
- function IUMagString (aPtr: univ Ptr;
- bPtr: univ Ptr;
- aLen: INTEGER;
- bLen: INTEGER): INTEGER;
- inline
- $3F3C, $000A, $A9ED;
- function IUMagIDString (aPtr: univ Ptr;
- bPtr: univ Ptr;
- aLen: INTEGER;
- bLen: INTEGER): INTEGER;
- inline
- $3F3C, $000C, $A9ED;
- function IUMagPString (aPtr: univ Ptr;
- bPtr: univ Ptr;
- aLen: INTEGER;
- bLen: INTEGER;
- itl2Handle: Handle): INTEGER;
- inline
- $3F3C, $001A, $A9ED;
- function IUMagIDPString (aPtr: univ Ptr;
- bPtr: univ Ptr;
- aLen: INTEGER;
- bLen: INTEGER;
- itl2Handle: Handle): INTEGER;
- inline
- $3F3C, $001C, $A9ED;
- procedure IUDateString (dateTime: LONGINT;
- longFlag: ByteParameter;
- var result: Str255);
- inline
- $4267, $A9ED;
- procedure IUTimeString (dateTime: LONGINT;
- wantSeconds: BOOLEAN;
- var result: Str255);
- inline
- $3F3C, $0002, $A9ED;
- procedure IUDatePString (dateTime: LONGINT;
- longFlag: ByteParameter;
- var result: Str255;
- intlHandle: Handle);
- inline
- $3F3C, $000E, $A9ED;
- procedure IUTimePString (dateTime: LONGINT;
- wantSeconds: BOOLEAN;
- var result: Str255;
- intlHandle: Handle);
- inline
- $3F3C, $0010, $A9ED;
- procedure IULDateString (var dateTime: LongDateTime;
- longFlag: ByteParameter;
- var result: Str255;
- intlHandle: Handle);
- inline
- $3F3C, $0014, $A9ED;
- procedure IULTimeString (var dateTime: LongDateTime;
- wantSeconds: BOOLEAN;
- var result: Str255;
- intlHandle: Handle);
- inline
- $3F3C, $0016, $A9ED;
- function IUScriptOrder (script1: ScriptCode;
- script2: ScriptCode): INTEGER;
- inline
- $3F3C, $001E, $A9ED;
- function IULangOrder (language1: LangCode;
- language2: LangCode): INTEGER;
- inline
- $3F3C, $0020, $A9ED;
- function IUTextOrder (aPtr: univ Ptr;
- bPtr: univ Ptr;
- aLen: INTEGER;
- bLen: INTEGER;
- aScript: ScriptCode;
- bScript: ScriptCode;
- aLang: LangCode;
- bLang: LangCode): INTEGER;
- inline
- $3F3C, $0022, $A9ED;
- procedure FindWord (textPtr: Ptr;
- textLength: INTEGER;
- offset: INTEGER;
- leadingEdge: BOOLEAN;
- breaks: BreakTablePtr;
- var offsets: OffsetTable);
- inline
- $2F3C, $8012, $001A, $A8B5;
- procedure NFindWord (textPtr: Ptr;
- textLength: INTEGER;
- offset: INTEGER;
- leadingEdge: BOOLEAN;
- nbreaks: NBreakTablePtr;
- var offsets: OffsetTable);
- inline
- $2F3C, $8012, $FFE2, $A8B5;
- procedure UprText (textPtr: Ptr;
- len: INTEGER);
- inline
- $301F, $205F, $A054;
- procedure LwrText (textPtr: Ptr;
- len: INTEGER);
- inline
- $301F, $205F, $A056;
- procedure LowerText (textPtr: Ptr;
- len: INTEGER);
- inline
- $301F, $205F, $A056;
- procedure StripText (textPtr: Ptr;
- len: INTEGER);
- inline
- $301F, $205F, $A256;
- procedure UpperText (textPtr: Ptr;
- len: INTEGER);
- inline
- $301F, $205F, $A456;
- procedure StripUpperText (textPtr: Ptr;
- len: INTEGER);
- inline
- $301F, $205F, $A656;
- function IUCompPString (aStr: ConstStr255Param;
- bStr: ConstStr255Param;
- itl2Handle: Handle): INTEGER;
- function IUEqualPString (aStr: ConstStr255Param;
- bStr: ConstStr255Param;
- itl2Handle: Handle): INTEGER;
- function IUStringOrder (aStr: ConstStr255Param;
- bStr: ConstStr255Param;
- aScript: ScriptCode;
- bScript: ScriptCode;
- aLang: LangCode;
- bLang: LangCode): INTEGER;
- function IUCompString (aStr: ConstStr255Param;
- bStr: ConstStr255Param): INTEGER;
- function IUEqualString (aStr: ConstStr255Param;
- bStr: ConstStr255Param): INTEGER;
- {}
- { The following provide direct function prototypes for new names for 68k}
- {}
- procedure DateString (dateTime: LONGINT;
- longFlag: ByteParameter;
- var result: Str255;
- intlHandle: Handle);
- inline
- $3F3C, $000E, $A9ED;
- procedure TimeString (dateTime: LONGINT;
- wantSeconds: BOOLEAN;
- var result: Str255;
- intlHandle: Handle);
- inline
- $3F3C, $0010, $A9ED;
- procedure LongDateString (var dateTime: LongDateTime;
- longFlag: ByteParameter;
- var result: Str255;
- intlHandle: Handle);
- inline
- $3F3C, $0014, $A9ED;
- procedure LongTimeString (var dateTime: LongDateTime;
- wantSeconds: BOOLEAN;
- var result: Str255;
- intlHandle: Handle);
- inline
- $3F3C, $0016, $A9ED;
- function CompareString (aStr: ConstStr255Param;
- bStr: ConstStr255Param;
- itl2Handle: Handle): INTEGER;
- function IdenticalString (aStr: ConstStr255Param;
- bStr: ConstStr255Param;
- itl2Handle: Handle): INTEGER;
- function CompareText (aPtr: univ Ptr;
- bPtr: univ Ptr;
- aLen: INTEGER;
- bLen: INTEGER;
- itl2Handle: Handle): INTEGER;
- inline
- $3F3C, $001A, $A9ED;
- function IdenticalText (aPtr: univ Ptr;
- bPtr: univ Ptr;
- aLen: INTEGER;
- bLen: INTEGER;
- itl2Handle: Handle): INTEGER;
- inline
- $3F3C, $001C, $A9ED;
- function LanguageOrder (language1: LangCode;
- language2: LangCode): INTEGER;
- inline
- $3F3C, $0020, $A9ED;
- function TextOrder (aPtr: univ Ptr;
- bPtr: univ Ptr;
- aLen: INTEGER;
- bLen: INTEGER;
- aScript: ScriptCode;
- bScript: ScriptCode;
- aLang: LangCode;
- bLang: LangCode): INTEGER;
- inline
- $3F3C, $0022, $A9ED;
- function StringOrder (aStr: ConstStr255Param;
- bStr: ConstStr255Param;
- aScript: ScriptCode;
- bScript: ScriptCode;
- aLang: LangCode;
- bLang: LangCode): INTEGER;
- procedure C2PStrProc (aStr: univ Ptr);
- function C2PStr (cString: univ Ptr): StringPtr;
- procedure P2CStrProc (aStr: StringPtr);
- function P2CStr (pString: StringPtr): Ptr;
-
- implementation
- end.